#!/bin/bash
#
# Copyright (C) 2013 Julien Desfossez <julien.desfossez@efficios.com>
# Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only

TEST_DESC="Live - User space tracing with tracefile_count"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../../
NR_ITER=1
NR_USEC_WAIT=1
DELAY_USEC=2000000
TESTAPP_PATH="$TESTDIR/utils/testapp"
TESTAPP_NAME="gen-ust-events"
TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"

SESSION_NAME="live"
EVENT_NAME="tp:tptest"

TRACE_PATH=$(mktemp -d -t tmp.test_ust_trace_file_count_trace_path.XXXXXX)

DIR=$(readlink -f $TESTDIR)

source $TESTDIR/utils/utils.sh

echo "$TEST_DESC"

function setup_live_tracing()
{
	# Create session with default path
	$TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME --live $DELAY_USEC \
		-U net://localhost >/dev/null 2>&1

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --subbuf-size 16k -C 16k -W 10 -u chan1
	$TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$EVENT_NAME" -s $SESSION_NAME -u -c chan1 >/dev/null 2>&1
	$TESTDIR/../src/bin/lttng/$LTTNG_BIN start $SESSION_NAME >/dev/null 2>&1
}

function clean_live_tracing()
{
	$TESTDIR/../src/bin/lttng/$LTTNG_BIN stop $SESSION_NAME >/dev/null 2>&1
	$TESTDIR/../src/bin/lttng/$LTTNG_BIN destroy $SESSION_NAME >/dev/null 2>&1
	rm -rf $TRACE_PATH
}

file_sync_after_first=$(mktemp -u -t tmp.test_ust_trace_file_count_sync_after_first.XXXXXX)

start_lttng_sessiond_notap
start_lttng_relayd_notap "-o $TRACE_PATH"

setup_live_tracing

# Run app in background
$TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event ${file_sync_after_first} >/dev/null 2>&1

while [ ! -f "${file_sync_after_first}" ]; do
	sleep 0.5
done

# Start the live test
$TESTDIR/regression/tools/live/live_test

# Wait for the applications started in background
wait

clean_live_tracing

rm -f ${file_sync_after_first}

stop_lttng_relayd_notap
stop_lttng_sessiond_notap
